﻿#include "database.h"

Database::Database()
{

}
int Database::create_database(QString db_type,QString db_name)
/*
 * 功能：初始化数据库
 * db_type: 数据库的类型，
 * db_name :新建数据库的名称
 * callback: 回调函数。若为创建用户信息则为 user;若为创建账簿，则为 table
 * 返回的是新建的数据库地址
 */
{
    int ret = 0;
    QSqlDatabase db ;
    db = QSqlDatabase::addDatabase(db_type);
    //这里输入你的数据库名
    db.setHostName("m_db");
    db.setDatabaseName(db_name);
    if (!db.open()){
        ret = -1;
    }
    else
        ret = 1;
    db.close();
    return ret;
}
QSqlDatabase Database::get_instance_db(QString db_name)
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName(db_name);
    db.open();
    if(db.isValid()){
        return db;
    }
    else
        return QSqlDatabase();
}

bool Database::check_same_table(QSqlDatabase &db,QString table_name)
/*
 * 根据提供的用户信息，查找是否已经创建表；
 * return:
 * true:存在同名用户
 * false:不存在同名用户
 */
{
    QSqlQuery query(db);
    bool val = false;
    while(query.next()){
        QString t_name = query.value(0).toString();
        if(t_name == table_name)
            val = true;
    }
    return val;
}

int Database::create_table(QSqlDatabase &db,QString table_name,QString order)
/*
 * return :
 * 1:创建表成功
 * -1:无效的数据库连接-
 * -2:存在同名表
 * -3:无同名表，创建表失败
*/
{
    int ret = 0;
    if(!check_same_table(db,table_name)){  //检查是否有同名表，没有则创建
          if(db.isOpen()){    //检查数据库连接是否有效
                QSqlQuery query(db);
                bool ok = query.exec(order);
                if(ok)
                  ret = 1;
                else
                  ret = -3;
          }
          else{
              ret = -2;
          }
    }
    else
        ret = -1;
    return ret;
}
QStringList Database::find_all_table(QSqlDatabase &db)
/*
 * 根据提供的用户信息，查找是否已经创建表；
 * return:
 * true:存在同名用户
 * false:不存在同名用户
 */
{
    QStringList m_list;
    QSqlQuery query(db);
    while(query.next()){
        QString t_name = query.value(0).toString();
        m_list.append(t_name);
    }
    return m_list;
}
Database::~Database()
{

}

